"""
本文件主要用来收纳关于函数的相关的代码
"""

'''
Python 基础入门语法 函数
01 函数介绍
'''


# 统计字符串的长度


def countLen(input_text):
    sum = 0
    for i in input_text:
        sum += 1
    return sum


def say_hi():
    print("欢迎来到黑马程序员！\n祝你在早日成为精通Python的小能手！")


'''
Python 基础入门语法 函数
02 函数参数
'''


def add(x, y):
    result = x + y
    print(f"{x} + {y}的计算结果是{result}。")


'''
Python 基础入门语法 函数
03 函数返回值
'''


def add2(x, y):
    result = x + y
    print(f"{x} + {y}的计算结果是{result}。")
    return result


'''
Python 基础入门语法 函数
04 函数默认返回值：None
'''


def test_none1():
    print("test_none")


def test_none2():
    print("test_none")
    return None


'''
Python 基础入门语法 函数
05 函数的说明文档
'''


def multiply(x, y):
    '''
    multiply函数可以接收两个参数，进行两数的相乘操作
    :param x: 乘数x
    :param y: 乘数y
    :return: 返回x乘y的结果
    '''
    result = x * y
    print(f"{x} * {y}的计算结果是{result}。")
    return result


'''
Python 基础入门语法 函数
06 函数的嵌套调用
'''


def func_a():
    print('---2---')


def func_b():
    print('---1---')
    func_a()
    print('---3---')


'''
Python 基础入门语法 函数
07 变量在函数中的作用域
'''


def test_a():
    num = 100
    print(num)


numb = 200
def test_b():
    print(numb)


def test_c():
    global numb
    numb = 300


if __name__ == '__main__':
    # 01
    input_info = 'JiMei University'
    print(f"字符串{input_info}的长度是{countLen(input_info)}。")
    say_hi()
    # 02
    add(1, 3)
    # 03
    result = add2(3, 4)
    print(f"接收到add2函数的返回值！result为{result}。")
    # 04
    # 测试None作为函数的返回值的情况
    result = test_none1()
    print(result)
    print(type(result))
    result = test_none2()
    print(result)
    print(type(result))
    # 05
    # 鼠标悬停在函数上可以查看该函数的函数说明文档
    multiply(5, 6)
    # 06
    func_b()
    # 07
    test_a()
    # 出了函数体就没办法使用的局部变量num
    # print(num)
    test_b()
    # numb是一个全局变量所以，它可以在函数体外直接使用
    print(f'现在numb的值为{numb}')
    # test_c函数将改变全局变量numb的值，功劳来自于global关键字的效果
    test_c()
    print(f'现在numb的值修改为{numb}')
